using WeatherSystem.API.Models;

namespace WeatherSystem.API.Repositories
{
    /// <summary>
    /// 统计数据Repository接口
    /// </summary>
    public interface IStatisticsRepository : IRepository<StatisticsEntry>
    {
        Task<List<StatisticsEntry>> GetByCityAndDateAsync(Guid cityId, DateTime date);
        Task<List<StatisticsEntry>> GetByCityAndDateRangeAsync(Guid cityId, DateTime startDate, DateTime endDate);
        Task<Dictionary<string, object>> GetCityStatisticsAsync(Guid cityId, DateTime startDate, DateTime endDate);
        Task<List<Dictionary<string, object>>> GetCityComparisonAsync(List<Guid> cityIds, DateTime date);
        Task<object> GetWeatherTrendAsync(Guid cityId, int days);
        Task<PagedResult<Dictionary<string, object>>> GetStatisticsPagedAsync(
            int page, int pageSize, Guid? cityId = null,
            DateTime? startDate = null, DateTime? endDate = null);
        Task<List<StatisticsEntry>> GetStatisticsRangeAsync(Guid cityId, string statisticType, DateTime startDate, DateTime endDate);
    }
}